# 4.7 Identify the uses of Cisco WAE Multi vendor SDN platform for Network optimization and service delivery across enterprise and SP networks. Links: - [WAE Quick Start](https://developer.cisco.com/docs/wan-automation-engine/#!wae-design-quick-start-guide/wae-design-quick-start-guide) - [WAE SR PCE](https://developer.cisco.com/docs/wan-automation-engine/#!overview/wae-and-sr-pce) - [WAE API Overview](https://developer.cisco.com/docs/wan-automation-engine/#wan-automation-engine-api-overview-wan-automation-engine-api-overview) ## Intro The WAN Automation Engine is a powerful, flexible software-defined networking (SDN) platform. It abstracts and simplifies your WAN environment while making it fully open and programmable. You can deploy innovative services such as Coordinated Maintenance, bandwidth calendaring, and premium network-routing solutions. Wan Planning Application: WAE Design Programmatic Interfaces: Python: NETCONF/RESTCONF WAE Server: - Abstracts Network Model (Multivendor/Multilayer) WAE Design: - A planning tool that runs on your desktop. In WAE Design you can retrieve a network model from the server and view the topology. You can quickly filter and drill down, simulate “what if“ scenarios and run tools to evaluate potential risks, find optimal paths/IGP metrics or suggest changes in capacity. The WAE engine on the server is not a controller. The WAE engine can be asked to evaluate a scenario or run an optimization via the APIs and WAE will return a response based on the model it has. WAE has a tool called Demand Deduction that uses measured data from the network to determine what the demand traffic values should be. WAE Can provide Capacity Planning with Resiliency Analysis ## WAE API: The operations and capabilities of the WAE Design planning tool can be automated using the WAE Design RPC python API. Snippet: ```python import sys import com.cisco.wae.design if __name__ == '__main__': # Get input variables srcPlanFile = sys.argv[sys.argv.index('-plan-file')+1] # This is like starting the Design client conn = com.cisco.wae.design.ServiceConnectionManager.newService() # This is like opening a plan file id = conn.getPlanManager().newPlanFromFileSystem(srcPlanFile) ### # In this section, do all the cool stuff you want the script to do ### # Do this if you want to save the output plan file with name 'out.pln' id.serializeToFileSystem('out.pln') ``` The simplest way to run a WAE Design API Python script is to use the design_api_python tool. It will set the correct environment and call the correct Python interpreter for your system. (Instructions for installing the required Python interpreter are given in the platform-dependent sessions below.) When it's time to run the script, go to the WAE Design bin directory and use the **design_api_python** utility ## The Optimization and Prediction Module (OPM) API Wrapper To make things simple, the WAE solutions team has developed the OPM API which provides a more "pythonic" way of working with the API where the user does not need a complete understanding of the WAE relational model ## NETCONF/RESTCONF APIs using the WAE server ```bash GET /restconf/data/networks/network=sr_dare/model/circuits HTTP/1.1 Host: :8080 Accept: application/yang-data+json Authorization: Basic username / password ``` - The WAE server runtime has access to the Design RPC and OPM modules as well. In this example, there is a sample OPM module on the WAE server that will compute disjoint paths. ```bash POST /restconf/data/networks/network=sr_dare/opm/path-compute-disjoint/run HTTP/1.1 Host: :8080 Content-Type: application/yang-data+json Authorization: Basic username / password { "input":{ "source-node1":"Node-1", "source-node2":"Node-2", "destination-node1":"Node-3", "destination-node2":"Node-4", "te-type":"segment_routing" } } ```